package com.networkmanagerj.service.status;

import java.util.HashMap;
import java.util.Map;

import com.networkmanagerj.model.Equipamento;

/**
 * Representa o Status de um Equipamento
 * 
 * @author jean
 */
public class EquipamentoStatus {

	private Equipamento equipamento;
	private Map<String, String> parametros = new HashMap<String, String>();
	private boolean online;

	/**
	 * Cria um Status de Equipamento
	 */
	public EquipamentoStatus() {
		parametros = new HashMap<String, String>();
	}

	/**
	 * 
	 * @param equipamentoId
	 * @param ip
	 * @param nome
	 * @param online
	 * @param type - 1(Modem); 2(Outros)
	 */
	public EquipamentoStatus(Equipamento equipamento, boolean online) {
		this.equipamento = equipamento;
		this.online = online;
		parametros = new HashMap<String, String>();
	}

	/**
	 * @return the equipamento
	 */
	public Equipamento getEquipamento() {
		return equipamento;
	}

	/**
	 * @param equipamento the equipamento to set
	 */
	public void setEquipamento(Equipamento equipamento) {
		this.equipamento = equipamento;
	}

	/**
	 * @return the online
	 */
	public boolean isOnline() {
		return online;
	}

	/**
	 * @param online - the online to set
	 */
	public void setOnline(boolean online) {
		this.online = online;
	}

	public void update(String nomeParametro, String valorParametro){
		parametros.put(nomeParametro, valorParametro);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((equipamento == null) ? 0 : equipamento.hashCode());
		return result;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		EquipamentoStatus other = (EquipamentoStatus) obj;
		if (equipamento == null) {
			if (other.equipamento != null)
				return false;
		} else if (!equipamento.equals(other.equipamento))
			return false;
		return true;
	}

}
